import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:untitled/utils/SnackBarHepler.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      scaffoldMessengerKey: ScaffoldMessengerGlobalKey,
      title: 'Flutter Demo',
      theme: ThemeData(
        useMaterial3: true,
        colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
        progressIndicatorTheme: ProgressIndicatorThemeData(
          // 颜色配置
          color: Colors.blue, // 主要颜色
          linearTrackColor: Colors.grey[300], // 线性轨道颜色
          circularTrackColor: Colors.grey[200], // 圆形轨道颜色
          refreshBackgroundColor: Colors.white, // 刷新指示器背景
          // 尺寸配置
          linearMinHeight: 8, // 线性指示器最小高度
          strokeWidth: 4, // 圆形指示器线条宽度
          // Material 3 特性
          trackGap: 4, // 轨道间隙
          stopIndicatorColor: Colors.red, // 停止指示器颜色
          stopIndicatorRadius: 2, // 停止指示器半径
          borderRadius: BorderRadius.circular(2), // 圆角
          // 布局约束
          constraints: BoxConstraints(minWidth: 36, minHeight: 36),
        ),
      ),
      home: const MyHomePage(title: 'Flutter Demo Home Page'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({super.key, required this.title});

  final String title;

  @override
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage>
    with SingleTickerProviderStateMixin {
  double selectValue = 1.0;
  @override
  Widget build(BuildContext context) {
    //脚手架
    return Scaffold(
      appBar: AppBar(
        title: Text('进度条'),
        backgroundColor: Colors.blue,
        foregroundColor: Colors.white,
      ),

      body: SizedBox.expand(
        child: SingleChildScrollView(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: [
              // 不确定进度 - 持续动画
              LinearProgressIndicator(),
              SizedBox(height: 40),
              // 确定进度 - 显示70%
              LinearProgressIndicator(value: 0.7),
              SizedBox(height: 40),
              LinearProgressIndicator(
                value: 0.65, // 进度值
                backgroundColor: Colors.grey[300], // 轨道背景色
                color: Colors.blue, // 进度条颜色
                valueColor: AlwaysStoppedAnimation<Color>(Colors.green), // 颜色动画
                minHeight: 8.0, // 最小高度
                borderRadius: BorderRadius.circular(4), // 圆角
                semanticsLabel: "下载进度",
                semanticsValue: "65%",
              ),
              SizedBox(height: 40),
              LinearProgressIndicator(
                value: 0.5,
                // Material 3 新特性
                stopIndicatorColor: Colors.red, // 停止指示器颜色
                stopIndicatorRadius: 2.0, // 停止指示器半径
                trackGap: 4.0, // 轨道间隙
                borderRadius: BorderRadius.circular(2), // 圆角
              ),
              SizedBox(height: 40),
              // 不确定进度 - 旋转动画
              CircularProgressIndicator(),
              SizedBox(height: 40),
              // 确定进度 - 显示具体进度
              CircularProgressIndicator(value: 0.7),
              SizedBox(height: 40),
              // 自适应 - 在iOS上使用Cupertino样式
              CircularProgressIndicator.adaptive(),
              SizedBox(height: 40),
              // 内部描边 - 线条完全在路径内部
              CircularProgressIndicator(
                strokeAlign:
                    CircularProgressIndicator.strokeAlignInside, // -1.0
              ),
              SizedBox(height: 40),
              // 居中描边 - 线条一半在内一半在外（默认）
              CircularProgressIndicator(
                strokeAlign: CircularProgressIndicator.strokeAlignCenter, // 0.0
              ),
              SizedBox(height: 40),
              // 外部描边 - 线条完全在路径外部
              CircularProgressIndicator(
                strokeAlign:
                    CircularProgressIndicator.strokeAlignOutside, // 1.0
              ),
              CupertinoActivityIndicator(),
            ],
          ),
        ),
      ),
    );
  }
}
